import calendar


# 计算从start到end每一年的天数并返回一个包含这些值的数组
def calculate_days_of_year(start_year, end_year):
    days_per_year = []

    for year in range(start_year, end_year + 1):
        # 使用 isleap() 函数检查是否是闰年
        days_in_year = 366 if calendar.isleap(year) else 365
        days_per_year.append(days_in_year)

    return days_per_year


# 接受每年天数数组 days_per_year 和一个表示从1961年1月1日开始的天数 n，然后计算出在哪一年的第几天
def find_year_and_day(days_per_year, n):
    year = 1961  # 起始年份

    for days_in_current_year in days_per_year:
        if n <= days_in_current_year:
            # 如果剩余天数小于等于当前年的天数，那么 n 处于当前年
            break
        else:
            # 否则，减去当前年的天数，继续检查下一年
            n -= days_in_current_year
            year += 1

    day_of_year = n
    return year, day_of_year


days_per_year = calculate_days_of_year(1961, 2023)
n = 366

result_year, result_day_of_year = find_year_and_day(days_per_year, n)
print(f"{n} 处于 {result_year} 年的第 {result_day_of_year} 天。")
